﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using BL;
using BE;
using System.Data;


namespace UI.Tesoreria
{
    public partial class frmCaja : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CargarGrilla();
            }
        }

        #region "Metodos"

        private void Grabar(Caja caja, String operacion)
        {
            caja.Codigo = txtCodigo.Text.ToUpper();
            caja.Nombre = txtNombre.Text.ToUpper();
            caja.Saldo = Convert.ToDecimal(txtSaldo.Text);
            caja.Activo = chkEstado.Checked;

            Caja_BL caja_bl = new Caja_BL(caja);
            if (operacion.Equals("NUEVO"))
            {
                caja.IDCreadoPor = User.Identity.Name;
                caja_bl.Insertar();
            }
            else
            {
                caja.IDModificadoPor = User.Identity.Name;
                caja_bl.Actualizar();
            }
            CargarGrilla();
        }

        private void CargarGrilla()
        {
            LabelErrorListado.Text = "";

            try
            {
                Caja_BL tipo = new Caja_BL();
                DataTable listado = tipo.Listado(txtCodigoFiltro.Text.Trim(), txtNombreFiltro.Text.Trim());
                GridCaja.DataSource = listado;
                GridCaja.DataBind();

                if (listado.Rows.Count < 1)
                {
                    throw new Exception("No se encontraron resultados");
                }
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }


        }

        private void LimpiarDetalle()
        {
            labelID.Text = "";
            txtCodigo.Text = "";
            txtNombre.Text = "";
            txtSaldo.Text = "";
        }

        private void RecuperarCaja(Caja caja)
        {
            labelID.Text = caja.ID;
            txtCodigo.Text = caja.Codigo;
            txtNombre.Text = caja.Nombre;
            txtSaldo.Text = caja.Saldo.ToString("N2");
            chkEstado.Checked = caja.Activo;
        }

        #endregion


        #region "Botones"

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarGrilla();
        }

        protected void btnNuevoCaja_Click(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                if (labelID.Text.Equals(""))
                {

                    if (txtCodigo.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Código";
                        txtCodigo.Focus();
                        return;
                    }
                    else if (txtNombre.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Nombre";
                        txtNombre.Focus();
                        return;
                    }
                    else if (txtSaldo.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Saldo";
                        txtSaldo.Focus();
                        return;
                    }
                    else
                    {
                        Caja caja = new Caja();
                        Grabar(caja, "NUEVO");
                    }
                }
                else
                {
                    Caja_BL caja_bl = new Caja_BL();
                    Caja caja = caja_bl.obtenerCajaPorId(labelID.Text.ToString());
                    Grabar(caja, "Modificar");
                }
                formularioNuevo.Hide();
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }

        protected void BtnCancelarCaja_Click(object sender, EventArgs e)
        {
            formularioNuevo.Hide();
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                LimpiarDetalle();
                formularioNuevo.Show();
                txtCodigo.Focus();
                chkEstado.Checked = true;
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }
        }

        #endregion

               
        #region "Grilla"

        protected void GridCaja_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                if (e.CommandName.Equals("Eliminar"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridCaja.DataKeys[gvr.RowIndex].Value;

                    Caja_BL caja_bl = new Caja_BL();
                    caja_bl.Eliminar(id.ToString());
                    CargarGrilla();
                }


                if (e.CommandName.Equals("Modificar"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridCaja.DataKeys[gvr.RowIndex].Value;
                    LimpiarDetalle();
                    Caja_BL caja_bl = new Caja_BL();
                    RecuperarCaja(caja_bl.obtenerCajaPorId(id.ToString()));
                    formularioNuevo.Show();
                }

            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
                throw;
            }
        }

        #endregion

        protected void GridCaja_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session["idCaja"] = GridCaja.SelectedRow.Cells[1].Text;
            string a = Session["idCaja"].ToString();

            Session["FechaCreacion"] = GridCaja.SelectedRow.Cells[6].Text; ;
            string semestre = Session["FechaCreacion"].ToString();

            Response.Redirect("frmCajaCierre.aspx");
        }
    }
}